import Mock from 'mockjs';

const loanTypes = [
  {name: '消费类贷款',id: Mock.Random.guid().replace(/-/g,'')},
  {name: '经营类贷款',id: Mock.Random.guid().replace(/-/g,'')}
];

const loanModes = [
  {name: '信用贷款',id: Mock.Random.guid().replace(/-/g,'')},
  {name: '抵押贷款',id: Mock.Random.guid().replace(/-/g,'')},
  {name: '保证贷款',id: Mock.Random.guid().replace(/-/g,'')}
];

export const loanItem = function (index) {
  return {
    id: 'loanItemIdForMock' + index,
    typeId: loanTypes[Mock.Random.integer(0, 1)].id,
    modeId: loanModes[Mock.Random.integer(0, 2)].id, 
    'icon|1': ['medel-o', 'shop-o', 'paid', 'balance-pay', 'discount', 'balance-o'],
    'img|1': ['/zj1.jpg','/gryhyw_07_grfwdk_normal.jpg','/zhufang.jpg'],
    'name|1': ['悦农e贷', '个人经营贷', '个人消费贷'],
    price: '@float(1, 100, 2, 2)',
    rate: '@float(1, 10, 2, 2)',
    year: '@integer(1,10)',
    'uses|1': ['个人消费', '生产经营', '日常消费'],
    'object|1': ['公务员、事业单位在编人员、金融从业人员', '从事合法经营的个人、投资人、合伙人、承包经营户、个体工商户等', '居住在本行服务辖区之内，有固定住所，具有完全民事行为能力的自然人'],
    'applicableObject|1': ['针对河源市区及东源县域内的公务员、参照公务员待遇的事业单位在编人员、事业单位的在编员工、正式编制的金融从业人员。', '从事合法经营的个人、非法人资格的私营企业投资人、合伙企业合伙人、农村承包经营户、个体工商户、个人独资企业的投资人。', '居住在本行服务辖区之内，有固定住所，具有完全民事行为能力的自然人。'],
    'usesDetails|1': ['个人网络消费贷款仅限于个人合法合理的消费支持。', '个人经营贷满足个人自身的生产经营需要。', '个人消费贷满足个人自身的日常消费需要。'],
    'condition|1': [
      '<p>1、年满十八周岁，具有完全民事行为能力，能提供有效的身份证明，并且在本辖区有固定住所或常住户口；借款人年龄加上贷款申请期限之和不超过60周岁。</p><p>2、具有正当的职业和稳定的经济收入，有偿还贷款本息的能力并能够提供相应的收入或资产证明。</p><p>3、遵纪守法，无恶意违约记录或不良债务资信。</p><p>4、在本行开立个人结算账户，并存入不少于规定比例的首付款金额或已支付首付款的有关证明。</p>',
      '<p>1、有经营业务的相关证明（如营业执照、生产承包合同等经营材料）。</p><p>2、收入稳定，信誉良好，具有按期偿还贷款本息的能力。</p><p>3、具有经办行所在地常住户口或合法居住证明，年满18周岁，且具备完全民事行为能力,借款人年龄和借款期限之和不超过60周岁（含）。</p><p>4、遵纪守法，无恶意违约记录或不良债务资信。</p>',
      '<p>1、信用良好，无不良记录。</p><p>2、具有稳定职业、稳定收入、按期偿还贷款本息的能力。</p>'
    ],
    'feature|1': ['手机秒贷 想贷就贷','']
  }
};


const loanList = function (num = Mock.Random.integer(1, 10)) {
  let list = [];
  for(let i = 0; i < num; i++){
    list.push(
      Mock.mock(loanItem(i))
    );
  }
  return list;
};

const processItem = function (status = 0, index) {
  let stateArray = [], theLoanItem = Mock.mock(loanItem(index));
  if(status == 0) stateArray = [0,1,2];
  else if (status == 1) stateArray = [0];
  else if (status == 2) stateArray = [1,2];
  return {
    id: Mock.Random.guid().replace(/-/g,''),
    loan: theLoanItem.name,
    name: '@cname()',
    price: theLoanItem.price,
    rate: theLoanItem.rate,
    year: theLoanItem.year,
    createTime: '@datetime(yyyy-MM-dd HH:mm:ss)',
    'state|1': stateArray
  }
};

const processList = function (options) {
  let list = [], pageSize = options.requestPage <= 4 ? options.pageSize : Mock.Random.integer(0, 10);
  for(let i = 0; i < pageSize; i++){
    list.push(
      Mock.mock(processItem(options.params.status, i))
    );
  }
  return list;
};

const managerList = function (num = Mock.Random.integer(1, 10)) {
  let list = [];
  for(let i = 0; i < num; i++){
    list.push(Mock.mock({
      userId: i,
      name: '@cname'
    }));
  }
  return list;
};

const fileList = function (formData) {
  let listString = '', files = formData.getAll('file');
  files.forEach( (item, index) => {
    listString += item.name + (index < files.length - 1 ? ';' : '');
  });
  return listString;
}

Mock.mock(/getIndexInfo/,function(options) {
  return Mock.mock({
    msg: '后端返回的提示信息！',
    code: 0,
    data: function () {
      let list = loanList(3);
      return [
        [
          '/zj1.jpg',
          '/gryhyw_07_grfwdk_normal.jpg',
          '/zhufang.jpg',
        ],
        list
      ]
    }
  })
})

Mock.mock(/getLoanList/,function(options) {
  let num = Mock.Random.integer(3, 10), list = loanList(10); // 固定10，保证apply有数据不会出错
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: list
  };
})

Mock.mock(/getType/,function(options) {
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: [
      loanTypes,
      loanModes
    ]
  }
})

Mock.mock(/getLoanDetail/,function(options) {
  console.log('getLoanDetail的axios传值为：',JSON.parse(options.body))//数据请求的传值
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: Mock.mock(loanItem(JSON.parse(options.body).id.charAt(JSON.parse(options.body).id.length - 1)))
  }
})

Mock.mock(/getDetailChoose/,function(options) {
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: [ 
      [
        { name: '居民身份证', id: Mock.Random.guid().replace(/-/g,'') },
        { name: '临时身份证', id: Mock.Random.guid().replace(/-/g,'') },
        { name: '护照', id: Mock.Random.guid().replace(/-/g,'') },
        { name: '户口簿', id: Mock.Random.guid().replace(/-/g,'') },
        { name: '军人身份证', id: Mock.Random.guid().replace(/-/g,'') },
      ],
      [
        { name: '网上银行', id: Mock.Random.guid().replace(/-/g,'') },
        { name: 'POS触发', id: Mock.Random.guid().replace(/-/g,'') },
        { name: '柜台', id: Mock.Random.guid().replace(/-/g,'') },
        { name: '手机银行', id: Mock.Random.guid().replace(/-/g,'') }
      ]
    ]
  }
})

Mock.mock(/getBranches/,function(options) {
  console.log('getBranches的axios传值为：',JSON.parse(options.body))//数据请求的传值
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: [ 
      { name: '中小微企业贷款中心(东源大道216号)', id: 1 },
      { name: '三农与个人贷款中心(东源大道216号)', id: 2 },
      { name: '城区支行(万隆商住楼W002号)', id: 3 },
      { name: '半江支行(河源市新江二路南80号)', id: 4 },
      { name: '仙塘支行(仙塘镇工业大道南8号)', id: 5 },
      { name: '蓝口支行(蓝口镇东湖路8号)', id: 6 },
      { name: '灯塔支行(东源县灯塔镇庆新街1号)', id: 7 },
      { name: '船塘支行(东源县船塘镇中兴路)', id: 8 },
      { name: '康禾支行(东源县康禾镇街镇)', id: 9 },
    ]
  }
})

Mock.mock(/getManagers/,function(options) {
  console.log('getManagers的axios传值为：',JSON.parse(options.body))//数据请求的传值
  let num = Mock.Random.integer(3, 10), list = managerList(num); 
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: list
  };
})

Mock.mock(/uploadFiles/,function(options) {
  console.log('uploadFiles的axios传值为：', options.body)//数据请求的传值
  let formData = options.body;
  return {
    msg: '后端返回的提示信息！',
    code: 0,
    data: fileList(formData)
  }
})

Mock.mock(/submitApply/,function(options) {
  console.log('submitApply的axios传值为：', options.body)//数据请求的传值
  let status = 0; // Mock.Random.boolean()? 0 : 500;
  return Mock.mock({
    code: status,
    msg: '后端返回的提示信息！',
  });
})

Mock.mock(/getProcessList/,function(options) {
  console.log('getProcessList的axios传值为：', options.body)//数据请求的传值
  let theOptions = JSON.parse(options.body);
  let status = 0; // Mock.Random.boolean()? 0 : 500;
  return Mock.mock({
    code: status,
    msg: '后端返回的提示信息！',
    data: Mock.mock(processList(theOptions))
  });
})